home *** CD-ROM | disk | FTP | other *** search
/ SGI Developer Toolbox 6.1 / SGI Developer Toolbox 6.1 - Disc 4.iso / src / demos / GL / newton / slave.c < prev    next >
C/C++ Source or Header  |  1994-08-01  |  2KB  |  92 lines

  1. /*
  2.  * Copyright 1991, 1992, 1993, 1994, Silicon Graphics, Inc.
  3.  * All Rights Reserved.
  4.  *
  5.  * This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics, Inc.;
  6.  * the contents of this file may not be disclosed to third parties, copied or
  7.  * duplicated in any form, in whole or in part, without the prior written
  8.  * permission of Silicon Graphics, Inc.
  9.  *
  10.  * RESTRICTED RIGHTS LEGEND:
  11.  * Use, duplication or disclosure by the Government is subject to restrictions
  12.  * as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
  13.  * and Computer Software clause at DFARS 252.227-7013, and/or in similar or
  14.  * successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
  15.  * rights reserved under the Copyright Laws of the United States.
  16.  */
  17. /*
  18.  * Slave driver. wait for a request and carry it out.
  19.  * Yossi Friedman, July 1988
  20.  */
  21.  
  22. #include <stdio.h>
  23. #include <gl.h>
  24. #include <math.h>
  25.  
  26. #include "config.h"
  27. #include "newton.h"
  28.  
  29. #ifdef MP
  30.  
  31. void slave(void *arg)
  32. {
  33.     int i = (int) arg;
  34.     for (;;) {
  35.     while (slave_func[i] == SLAVE_IDLE)
  36.         ;
  37.  
  38.     switch (slave_func[i]) {
  39.       case DO_CLEAR:
  40.         do_clear(end_model_atoms[i-1], end_model_atoms[i]);
  41.         break;
  42.  
  43.       case DO_ACCEL:
  44.         do_accel(end_model_springs[i-1], end_model_springs[i], i);
  45.         break;
  46.  
  47.       case DO_BOUNDS:
  48.         do_bounds(end_model_atoms[i-1], end_model_atoms[i]);
  49.         break;
  50.  
  51.       case DO_VEL_DAMP_POS:
  52.         do_vel_damp_pos(end_model_atoms[i-1], end_model_atoms[i]);
  53.         break;
  54.  
  55.       case DO_ROTATE_MODEL:
  56.         do_rotate_model(end_model_atoms[i-1], end_model_atoms[i]);
  57.         break;
  58.  
  59.       case DO_ROTATE_PHYSICS:
  60.         do_rotate_physics(end_model_atoms[i-1], end_model_atoms[i]);
  61.         break;
  62.  
  63.       case DRAW_FLAT_SURFS_1:
  64.         draw_flat_surfs_1(end_model_surfs[i-1], end_model_surfs[i]);
  65.         break;
  66.  
  67.       case DRAW_SMOOTH_SURFS_1:
  68.         draw_smooth_surfs_1(end_model_atoms[i-1], end_model_atoms[i]);
  69.         break;
  70.  
  71.       case DRAW_SMOOTH_SURFS_2:
  72.         draw_smooth_surfs_2(end_model_surfs[i-1], end_model_surfs[i], i);
  73.         break;
  74.  
  75.       case DRAW_SMOOTH_SURFS_3:
  76.         draw_smooth_surfs_3(end_model_atoms[i-1], end_model_atoms[i]);
  77.         break;
  78.  
  79.       case SLAVE_DIE:
  80.         my_exit(0);
  81.  
  82.       default:
  83.         fprintf(stderr, "newton: slave: Unidentified request (%d)\n", slave_func);
  84.         break;
  85.     }
  86.  
  87.     slave_func[i] = SLAVE_IDLE;
  88.     }
  89. }
  90.  
  91. #endif /* MP */
  92.